package stream;

import pojo.UserInfo;

import java.util.*;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 我们日常SQL使用的时候，都是Group By实现分组。
 * Stream也有类似功能，比如一个集合有3个组的员工，我们想获取每个组的员工。
 * 可以通过.collect(Collectors.groupingBy(Obj::getXXX));实现。返回的集合是Map集合！
 */

public class GroupingByList {
    public static void main(String[] args) {
        ArrayList<UserInfo> list = new ArrayList();
        list.add(new UserInfo(1, "张三", 1));
        list.add(new UserInfo(2, "李四", 2));
        list.add(new UserInfo(3, "王五", 3));
        list.add(new UserInfo(3, "赵六", 4));
        Map<Integer, List<UserInfo>> collect = list.stream()
                .collect(Collectors.groupingBy(UserInfo::getId));
        collect.forEach((k,v) -> {
            System.out.println(String.format("GroupID=%s,Element=%s",k.toString(),Arrays.toString(v.toArray())));
        });
    }
}
